#include "t_spi_m_interface.h"
#include "stm32f0xx_hal.h"
#include "t_spi_m.h"
t_spi_gpio_t gpio_spi = {
	.cs_port=GPIOA,
	.cs_pin=GPIO_PIN_4,
	
	.mosi_port=GPIOA,
	.mosi_pin=GPIO_PIN_7,
	
	.miso_port=GPIOA,
	.miso_pin=GPIO_PIN_6,
	
	.sck_port=GPIOA,
	.sck_pin=GPIO_PIN_5,

};

void spi_gpio_cfgin(void *port, uint16_t pin)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = pin;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(port, &GPIO_InitStruct);
}
void spi_gpio_cfgout(void *port, uint16_t pin)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(port, &GPIO_InitStruct);
}
void spi_gpio_t_delay(uint32_t us)
{
for(volatile uint32_t i=0; i<us*10; i++);
}
void spi_gpio_write(void *port, uint16_t pin, uint8_t value)
{
	HAL_GPIO_WritePin(port, pin, (GPIO_PinState)value);
}
uint8_t spi_gpio_read(void *port, uint16_t pin)
{
	uint8_t ret;
	ret = HAL_GPIO_ReadPin(port, pin);
	return ret;
}

